import java.util.Arrays;
import java.util.Scanner;

public class test4 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(); // 有多少组
        while(n>0){
            n--;
            int count = in.nextInt(); //数据的长度
            int[] nums1 = new int[count];
            int[] nums2 = new int[count];
            for (int i = 0; i < count; i++) nums1[i] = in.nextInt();
            for (int i = 0; i < count; i++) nums2[i] = in.nextInt();
            getResult(nums1,nums2);
            System.out.println();
        }
    }
    public static void getResult(int[] nums1,int[] nums2){
        // 每次对比三个数, 处理三个数的位置
        int length = nums1.length;
        // i直接从下标为2开始,处理往前数两个数以及当前i的数
        // 如果i是双数,最大的放i-2的位置,最小的放i-1
        // 如果i是单数,最大的放i-1.最小的放i-2
        // 是否还要处理数组2呢,刚好和数组1相反
        for(int i=2;i<length;i++){
            int sum1 = nums1[i-2]+nums1[i-1]+nums1[i];
            int flag1 = nums1[i-2],flag2 = nums1[i-1],flag3 = nums1[i];

            int sum2 = nums2[i-2]+nums2[i-1]+nums2[i];
            int flag4 = nums2[i-2],flag5 = nums2[i-1],flag6 = nums2[i];
            if(i%2==0){
                nums1[i-2] = Math.max(Math.max(flag1,flag2),flag3);
                nums1[i-1] = Math.min(Math.min(flag1,flag2),flag3);
                nums1[i] = sum1-nums1[i-2]-nums1[i-1];

                nums2[i-2] = Math.min(Math.min(flag4,flag5),flag6);
                nums2[i-1] = Math.max(Math.max(flag4,flag5),flag6);
                nums2[i] = sum2-nums2[i-2]-nums2[i-1];
            }else{
                nums1[i-2] = Math.min(Math.min(flag1,flag2),flag3);
                nums1[i-1] = Math.max(Math.max(flag1,flag2),flag3);
                nums1[i] = sum1-nums1[i-2]-nums1[i-1];

                nums2[i-2] = Math.max(Math.max(flag4,flag5),flag6);
                nums2[i-1] = Math.min(Math.min(flag4,flag5),flag6);
                nums2[i] = sum2-nums2[i-2]-nums2[i-1];
            }
        }
        // 输出最后的结果
        for(int x:nums1) System.out.print(x+" ");
        System.out.println();
        for(int y:nums2) System.out.print(y+" ");
    }


    public static void getResult1(int[] nums1,int[] nums2){
        // 进行排序
        Arrays.sort(nums1); //递增
        Arrays.sort(nums2);
        int n = nums1.length;

        int[] arr1 = new int[n];
        int[] arr2 = new int[n];
        int left1=0,left2=0,right1=n-1,right2=n-1;

        for (int i = 0; i < n; i++) {
            if(i%2==0){
                // 最大碰最小
                arr1[i] = nums1[right1];
                arr2[i] = nums2[left2];
                right1--;
                left2++;
            }{
                arr1[i] = nums1[left1];
                arr2[i] = nums2[right2];
                left1++;
                right2--;
            }
        }
         // 输出最后的结果
        for(int x:arr1) System.out.print(x+" ");
        System.out.println();
        for(int y:arr2) System.out.print(y+" ");
    }
}
